package fachada;

import java.io.Serializable;

import javax.jms.JMSException;
import javax.naming.InitialContext;

import br.com.kapa.beans.MensagemBeanRemote;
import br.com.kapa.dao.DaoClienteBeanRemote;
import br.com.kapa.dao.DaoMateriaPrimaBeanRemote;
import br.com.kapa.dao.DaoProdutoBeanRemote;
import br.com.kapa.dao.DaoSaidaProdutoBeanRemote;
import br.com.kapa.dao.DaoUnidadeBeanRemote;
import br.com.kapa.dao.DaoUsuarioBeanRemote;

public class Fachada implements Serializable {

	private static final long serialVersionUID = 1L;
	private static Fachada instancia;
	private InitialContext ctx;

	private Fachada() {
	}

	public static Fachada getInstance() {
		if (instancia == null) {
			instancia = new Fachada();
		}
		return instancia;
	}

	public DaoProdutoBeanRemote getDaoProduto() {

		try {
			ctx = new InitialContext();
			return (DaoProdutoBeanRemote) ctx.lookup("bean/dao_produto");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	public DaoUnidadeBeanRemote getDaoUnidade() {
		try {
			ctx = new InitialContext();
			return (DaoUnidadeBeanRemote) ctx.lookup("bean/dao_unidade");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	public DaoMateriaPrimaBeanRemote getDaoMateriaPrima() {
		try {
			ctx = new InitialContext();
			return (DaoMateriaPrimaBeanRemote) ctx.lookup("bean/dao_materiaprima");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	public DaoClienteBeanRemote getDaoCliente() {
		try {
			ctx = new InitialContext();
			return (DaoClienteBeanRemote) ctx.lookup("bean/dao_cliente");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	public DaoUsuarioBeanRemote getDaoUsuario() {
		try {
			ctx = new InitialContext();
			return (DaoUsuarioBeanRemote) ctx.lookup("bean/dao_usuario");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	public DaoSaidaProdutoBeanRemote getDaoSaidaProduto() {
		try {
			ctx = new InitialContext();
			return (DaoSaidaProdutoBeanRemote) ctx.lookup("bean/dao_saidaproduto");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	public void sendMessageToLog(String assunto, String valor) {
		try {
			InitialContext ctx = new InitialContext();
			MensagemBeanRemote msg = (MensagemBeanRemote) ctx
					.lookup("bean/mensagem");
			msg.enviaMensagem(assunto + " : " + valor);
		} catch (javax.naming.NamingException ne) {
			ne.printStackTrace();
		} catch (JMSException jmse) {
			jmse.printStackTrace();
		}
	}
}
